緩沖區溢出攻擊會造成以下危害:
緩沖區溢出攻擊:緩沖區溢出攻擊的原理是向程序緩沖區寫入超出其邊界的內容,造成緩沖區的溢出,使得程序轉而執行其他攻擊者指定的代碼,通常是為攻擊者打開遠程連接的ShellCode,以達到攻擊目標。近年來著名的蠕蟲如Code-Red、SQL.Slammer、Blaster 和Sasser 等,都是通過緩沖區溢出攻擊獲得系統權限后進行傳播。
蠕蟲攻擊:網絡蠕蟲會利用緩沖區溢出構造緩沖區溢出程序,進而遠程控制易感目標主機,然后傳播蠕蟲程序。
拒絕服務攻擊:通過連續向攻擊目標發送超出其處理能力的過量數據,消耗其有限的網絡鏈路或操作系統資源,使之無法為合法用戶提供有效服務。某些操作系統設計不完善可能會因為緩沖區溢出而重啟、崩潰,造成拒絕服務器攻擊。
非法提升權限:攻擊者利用某種手段或者利用系統的漏洞,獲得本不應具有的權限。最為典型的非法提升權限攻擊為緩沖區溢出攻擊。另外,通過猜測口令、植入木馬、預留后門等,也可以使攻擊者獲得本不應具有的權限。一般來說,權限提升僅是一種手段,后續往往伴隨著對目標系統信息資源和服務的非法操作。
內存破壞類攻擊:此類漏洞的共同特征是由于某種形式的非預期的內存越界訪問,可控程度較好的情況下可執行攻擊者指定的任意指令,其他的大多數情況下會導致拒絕服務或信息泄露。對內存破壞類漏洞再按來源細分,可以分出如下子類型:棧緩沖區溢出、堆緩沖區溢出、靜態數據區溢出、格式串問題、越界內存訪問、釋放后重用和二次釋放。
預防緩沖區溢出攻擊的方法有以下這些:
嚴格編寫程序代碼:借助工具來協助程序開發者解決緩沖區溢出,但是可是由于C語言的本身特點,這些工具不能找出所有的緩沖區溢出漏洞,因此偵錯技術只是被用來減少緩沖區溢出漏洞,并不能完全消滅,想要完全消滅這類漏洞,就需要程序員嚴格編寫代碼。
禁止執行堆棧數據段:在進行系統操作時數據地址空間不可執行,從而禁止攻擊者執行被植入的攻擊代碼,這種措施在一定的程度上也對緩沖區溢出攻擊起到了防范作用。但是攻擊者不一定非要通過植入攻擊代碼來實現緩沖區溢出攻擊,所以這種方法并不能徹底解決緩沖區溢出攻擊。
利用程序編譯器的邊界檢查:植入攻擊代碼時引起緩沖區溢出攻擊的一個方面,改變程序執行的流程則是另一個方面,而利用程序編譯器的邊界檢查則使得緩沖區溢出攻擊不可能實現,從而完全消除了緩沖區溢出攻擊的威脅。
指針完全性檢查:程序指針完整性檢查和邊界檢查略有不同,程序指針完整性檢查在程序指針被改變之前檢測,因此即使攻擊者成功改變了程序的指針,也會因為先前檢測到指針的變化而失效,這樣雖然不能完全解決問題,但是他確實阻止了大多數的緩沖區溢出攻擊,并且這種方法在性能方面有很大優勢,兼容性特別優良。
及時修補漏洞:攻擊者利用緩沖區溢出的主要攻擊手段就是利用服務器程序、數據庫程序、操作系統等的漏洞,所以及時修補這些漏洞可以從根本上解決緩沖區溢出的問題,這種漏洞可以通過打補丁、升級軟件等方法來解決。
回答所涉及的環境:聯想天逸510S、Windows 10。
緩沖區溢出攻擊會造成以下危害:
緩沖區溢出攻擊:緩沖區溢出攻擊的原理是向程序緩沖區寫入超出其邊界的內容,造成緩沖區的溢出,使得程序轉而執行其他攻擊者指定的代碼,通常是為攻擊者打開遠程連接的ShellCode,以達到攻擊目標。近年來著名的蠕蟲如Code-Red、SQL.Slammer、Blaster 和Sasser 等,都是通過緩沖區溢出攻擊獲得系統權限后進行傳播。
蠕蟲攻擊:網絡蠕蟲會利用緩沖區溢出構造緩沖區溢出程序,進而遠程控制易感目標主機,然后傳播蠕蟲程序。
拒絕服務攻擊:通過連續向攻擊目標發送超出其處理能力的過量數據,消耗其有限的網絡鏈路或操作系統資源,使之無法為合法用戶提供有效服務。某些操作系統設計不完善可能會因為緩沖區溢出而重啟、崩潰,造成拒絕服務器攻擊。
非法提升權限:攻擊者利用某種手段或者利用系統的漏洞,獲得本不應具有的權限。最為典型的非法提升權限攻擊為緩沖區溢出攻擊。另外,通過猜測口令、植入木馬、預留后門等,也可以使攻擊者獲得本不應具有的權限。一般來說,權限提升僅是一種手段,后續往往伴隨著對目標系統信息資源和服務的非法操作。
內存破壞類攻擊:此類漏洞的共同特征是由于某種形式的非預期的內存越界訪問,可控程度較好的情況下可執行攻擊者指定的任意指令,其他的大多數情況下會導致拒絕服務或信息泄露。對內存破壞類漏洞再按來源細分,可以分出如下子類型:棧緩沖區溢出、堆緩沖區溢出、靜態數據區溢出、格式串問題、越界內存訪問、釋放后重用和二次釋放。
預防緩沖區溢出攻擊的方法有以下這些:
嚴格編寫程序代碼:借助工具來協助程序開發者解決緩沖區溢出,但是可是由于C語言的本身特點,這些工具不能找出所有的緩沖區溢出漏洞,因此偵錯技術只是被用來減少緩沖區溢出漏洞,并不能完全消滅,想要完全消滅這類漏洞,就需要程序員嚴格編寫代碼。
禁止執行堆棧數據段:在進行系統操作時數據地址空間不可執行,從而禁止攻擊者執行被植入的攻擊代碼,這種措施在一定的程度上也對緩沖區溢出攻擊起到了防范作用。但是攻擊者不一定非要通過植入攻擊代碼來實現緩沖區溢出攻擊,所以這種方法并不能徹底解決緩沖區溢出攻擊。
利用程序編譯器的邊界檢查:植入攻擊代碼時引起緩沖區溢出攻擊的一個方面,改變程序執行的流程則是另一個方面,而利用程序編譯器的邊界檢查則使得緩沖區溢出攻擊不可能實現,從而完全消除了緩沖區溢出攻擊的威脅。
指針完全性檢查:程序指針完整性檢查和邊界檢查略有不同,程序指針完整性檢查在程序指針被改變之前檢測,因此即使攻擊者成功改變了程序的指針,也會因為先前檢測到指針的變化而失效,這樣雖然不能完全解決問題,但是他確實阻止了大多數的緩沖區溢出攻擊,并且這種方法在性能方面有很大優勢,兼容性特別優良。
及時修補漏洞:攻擊者利用緩沖區溢出的主要攻擊手段就是利用服務器程序、數據庫程序、操作系統等的漏洞,所以及時修補這些漏洞可以從根本上解決緩沖區溢出的問題,這種漏洞可以通過打補丁、升級軟件等方法來解決。
回答所涉及的環境:聯想天逸510S、Windows 10。